package com.littleshu.test;

import java.util.ArrayList;
import java.util.List;

/**
 * 题目：古典问题：有一对兔子，从出生后第3个月起每个月都生一对兔子，小兔子长到第三个月后每个月又生一 对兔子，假如兔子都不死，问每个月的兔子总数为多少？
 * 1.程序分析： 兔子的规律为数列1,1,2,3,5,8,13,21....
 * 
 * @author littleshu
 *
 */
public class Question1 implements RunTest {
	public static int count = 1;

	public static void main(String[] args) {
		new Question1().runTest();
	}

	@Override
	public void runTest() {

		// 假定现在有10个月
		int months = 10;

		Rabbit rabbit = new Rabbit();

		// 每月生长一次
		for (int i = 1; i <= months; i++) {
			rabbit.grow();
			System.out.println("第" + i + "个月共有" + count + "对兔子");
		}
	}
}

class Rabbit {

	// 兔子的年纪(其实算是月纪)
	public int age = 0;

	// 兔子生的小兔子
	public List<Rabbit> rabbitList = new ArrayList<Rabbit>();

	// 兔子生长
	public void grow() {
		// 兔子长一岁
		age++;

		if (age > 2) {

			// 生一对小兔子
			rabbitList.add(new Rabbit());

			// 计下这一对小兔子
			Question1.count++;
		}

		// 生的小兔子也生长一次
		for (Rabbit rabbit : rabbitList) {
			rabbit.grow();
		}
	}
}